package com.javalab._3object_oriented._1object;

/**
 * 一个类包含什么内容
 */
public class Calculator {
    // 属性
    int height;
    double weight;
    String name;

    // 无参构造方法
    Calculator() {

    }

    // 有参构造方法（如果没有有参构造方法，系统会在编译的时候自动生成一个无参构造方法）
    Calculator(int height, double weight, String name) {
        this.height = height;
        this.weight = weight;
        this.name = name;
    }

    // 普通方法
    int add(int a, int b) {
        return a + b;
    }

    // 方法重载
    // 功能相似的时候，尽可能用重载
    // 当同一个类当中，方法名相同，参数列表不同，包括数量不同，类型不同就构成了重载
    // 注意返回值不同不构成重载，修饰符不同也不构成重载
    int add(int a, int b, int c) {
        return a + b + c;
    }

    long add(int a, int b, long c) {
        return a + b + c;
    }

    // setter 方法
    void setName(String name) {
        this.name = name;
    }

    // getter 方法
    String getName() {
        return name;
    }

    public static void main(String[] args) {
        // 无参构造方法创建对象
        Calculator calculator1 = new Calculator();
        int add1 = calculator1.add(1, 2);
        System.out.println(add1);
        int add2 = calculator1.add(1, 2, 3);
        System.out.println(add2);

        // 有参构造方法构建对象
        Calculator calculator2 = new Calculator(1,2.1D,"mac");
        String name1 = calculator2.getName();
        System.out.println(name1);
        calculator2.setName("lenovo");
        String name2 = calculator2.getName();
        System.out.println(name2);
    }
}
